﻿using Sino.CapacityCloud.WebApi;
using Sino.Tms.Primitives;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Sino.CapacityCloud.Repositories.Models
{

    public interface IOrder<TOrder> where TOrder : class, IOrder<TOrder>
    {

        string Id { get; set; }

        string OrderNumber { get; set; }

        string UserId { get; set; }

        string TransportLinkageId { get; set; }

        double Amount { get; set; }

        string AmountUnit { get; set; }

        DateTime ArrivalTime { get; set; }

        string CarCode { get; set; }

        string CarLength { get; set; }

        string Category { get; set; }

        string ContactName { get; set; }

        string ContactChatId { get; set; }

        string ContactPhoneNumber { get; set; }

        DateTime DeliveryTime { get; set; }

        // TODO: Can be removed?
        string GrabComment { get; set; }

        bool IsFocus { get; set; }

        string Price { get; set; }

        OrderStatus State { get; set; }

        double Emergency { get; set; }

        string Remarks { get; set; }

        OrderType Type { get; set; }

        TransportLinkage TransportLinkage { get; set; }

        ApplicationUser User { get; set; }

        TOrder Parent { get; set; }

        ICollection<TOrder> SubOrders { get; set; }

    }

}